Ext.BLANK_IMAGE_URL = 'web/lib/ext/resources/images/default/s.gif';
var App = new Ext.App({});
//Ext.Ajax.on('requestcomplete', errorHandle, this);
//function errorHandle(conn, response, options) {
//	var respObject = Ext.decode(response.responseText);
//	if (respObject.error) {
//		App.setAlert(respObject.errorCode, respObject.errorMsg);
//		if (respObject.errorCode == 'SYS.TIMEOUT') {
//			// window.onbeforeunload=Ext.emptyFn();
//			alert('timeout');
//			location.href = "/web/pages/FTIndex.htm";
//		}
//	}
//};
Ext.onReady(function() {
	Ext.QuickTips.init();
	Ext.apply(Ext.QuickTips.getQuickTip(), {
				showDelay : 100,
				hideDelay : 100,
				dismissDelay : 0,
				anchor : 'top',
				anchorOffset : 50,
				// shadow : 'frame',
				trackMouse : true
			});
	Ext.apply(Ext.util.Format, {
				customDateRenderer : function(format) {
					return function(v) {
						if (Ext.isEmpty(v)) {
							return '';
						} else {
							var date = Date.parseDate(v, "Y-m-d H:i:s", true); // returns null
							var returnString = date.format(format);
							return returnString;
						}
					};
				},
				customFormatDateValue : function(v, format) {
					if (Ext.isEmpty(v)) {
						return '';
					} else {
						var date = Date.parseDate(v, 'Y-m-d H:i:s', true); // returns null
						var returnString = date.format(format);
						return returnString;
					}
				}
			});
	Ext.apply(Ext.form.VTypes, {
				daterange : function(val, field) {
					var date = field.parseDate(val);
					if (!date) {
						return false;
					}
					if (field.startDateField) {
						var start = Ext.getCmp(field.startDateField);
						if (!start.maxValue || (date.getTime() != start.maxValue.getTime())) {
							start.setMaxValue(date);
							start.validate();
						}
					} else if (field.endDateField) {
						var end = Ext.getCmp(field.endDateField);
						if (!end.minValue || (date.getTime() != end.minValue.getTime())) {
							end.setMinValue(date);
							end.validate();
						}
					}
					return true;
				},
				password : function(val, field) {
					if (field.initialPassField) {
						var pwd = Ext.getCmp(field.initialPassField);
						return (val == pwd.getValue());
					}
					return true;
				},
				passwordText : '两次输入密码不匹配',
				uniqueusername : function(val, field) {
					if (field.allowBlank === false) {
						if (val === '') {
							return true;
						}
					}
					if (field.minLength) {
						if (val.length < field.minLength) {
							return true;
						}
					}
					if (field.maxLength) {
						if (val.length > field.maxLength) {
							return true;
						}
					}
					Ext.Ajax.request({
								url : 'user/checkAccountUsed.do',
								method : 'POST',
								params : {
									account : val,
									id : field.findParentByType('form').getForm().findField('id').getValue()
								},
								success : function(response, action) {
									var used = Ext.decode(response.responseText);
									if (used) {
										field.markInvalid('[' + val + ']' + '该用户名已存在');
										return false;
									} else {
										field.clearInvalid();
										return true;
									}
								},
								failure : function(response, action) {
									App.setAlert('error', '载入失败');
								}
							});
					return true;
				},
				uniqueusernameText : 'Username Already In Use'
			});
	Ext.form.Field.prototype.msgTarget = 'qtip';
	// 创建北面的面板
	var top = new Ext.Panel({
				region : 'north',
				height : 80
			});
	// 左边的树
	var left = new Ext.tree.TreePanel({
				region : 'west',
				title : '功能导航',
				collapsible : true,
				split : true,
				containerScroll : true,
				autoScroll : true,
				width : 220
			});
	var root = new Ext.tree.TreeNode({
				id : 'root',
				text : '菜单',
				leaf : false
			});
	var companyTreeNode = new Ext.tree.TreeNode({
		text : '客户管理',
		listeners : {
			click : function(n) {
				if (center.getItem(n.attributes.id)) {
					// 表示标签已打开,则激活
					center.setActiveTab(n.attributes.id);
				} else {
					var companyModule = new Tm.common.Module({
						name : 'companyModule',
						id : 'companyModule',
						scriptFiles : ['web/src/company/CompanyIndexPanel.js', 'web/src/company/CompanyAddPanel.js', 'web/src/company/CompanyContactorPanel.js', 'web/src/company/ContactorAddPanel.js'],
						afterInit : function() {
							var p = new Tm.company.CompanyIndexPanel({
										title : n.attributes.text, // 标题就是节点的文本
										id : n.attributes.id, // 标签的ID和节点的ID一样
										closable : true
									});
							center.add(p);
							center.setActiveTab(p);
						}
					});
				}
			}
		}
	});
	var userTreeNode = new Ext.tree.TreeNode({
				text : '用户管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var userModule = new Tm.common.Module({
										name : 'userModule',
										id : 'userModule',
										scriptFiles : ['web/src/user/UserAddPanel.js', 'web/src/user/UserIndexPanel.js', 'web/src/user/UserRolePanel.js'],
										afterInit : function() {
											var p = new Tm.user.UserIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var roleTreeNode = new Ext.tree.TreeNode({
				text : '角色管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var roleModule = new Tm.common.Module({
										name : 'roleModule',
										id : 'roleModule',
										scriptFiles : ['web/src/role/RoleIndexPanel.js', 'web/src/role/RoleAddPanel.js', 'web/src/role/RolePermissionPanel.js'],
										afterInit : function() {
											var p = new Tm.role.RoleIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var categoryTreeNode = new Ext.tree.TreeNode({
				id : 'categoryIndexPanel',
				text : '分类管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var categoryModule = new Tm.common.Module({
										name : 'categoryModule',
										id : 'categoryModule',
										scriptFiles : ['web/src/category/CategoryIndexPanel.js', 'web/src/category/CategoryAddPanel.js'],
										afterInit : function() {
											var p = new Tm.category.CategoryIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var taskTreeNode = new Ext.tree.TreeNode({
				text : '案件管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var taskModule = new Tm.common.Module({
										name : 'taskModule',
										id : 'taskModule',
										scriptFiles : ['web/src/task/TaskAddPanel.js', 'web/src/task/TaskIndexPanel.js', 'web/src/task/TaskCategoryPanel.js','web/src/task/TaskImagePanel.js','web/src/task/TaskAttachmentPanel.js', 'web/src/task/TaskBillPanel.js',
												'web/src/task/TaskBillAddPanel.js', 'web/src/task/TaskBillDetailAddPanel.js', 'web/src/task/TaskLogIndexPanel.js', 'web/src/task/TaskLogAddPanel.js',
												'web/src/task/TaskFileSearchPanel.js', 'web/src/task/TaskFileAddPanel.js', 'web/src/task/TaskNoticeAddPanel.js', 'web/src/task/TaskNoticeIndexPanel.js'],
										afterInit : function() {
											var p = new Tm.task.TaskIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var billTreeNode = new Ext.tree.TreeNode({
				text : '账单管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var billModule = new Tm.common.Module({
										name : 'billModule',
										id : 'billModule',
										scriptFiles : ['web/src/bill/BillIndexPanel.js', 'web/src/bill/BillAddPanel.js', 'web/src/bill/BillDetailAddPanel.js', 'web/src/bill/FeeAddPanel.js',
												'web/src/bill/BillAddPanel.js', 'web/src/bill/BillDetailAddPanel.js', 'web/src/bill/BillFeePanel.js'],
										afterInit : function() {
											var p = new Tm.bill.BillIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var fileTreeNode = new Ext.tree.TreeNode({
				text : '资料管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var fileModule = new Tm.common.Module({
										name : 'fileModule',
										id : 'fileModule',
										scriptFiles : ['web/src/file/FileIndexPanel.js', 'web/src/file/FileNavigatePanel.js', 'web/src/file/FileAddPanel.js', 'web/src/file/FileyFileAddPanel.js',
												'web/src/file/FileSearchPanel.js'],
										afterInit : function() {
											var p = new Tm.file.FileIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var noticeTreeNode = new Ext.tree.TreeNode({
				text : '提醒管理',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var noticeModule = new Tm.common.Module({
										name : 'noticeModule',
										id : 'noticeModule',
										scriptFiles : ['web/src/notice/NoticeIndexPanel.js', 'web/src/notice/NoticeAddPanel.js'],
										afterInit : function() {
											var p = new Tm.notice.NoticeIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	var chartTreeNode = new Ext.tree.TreeNode({
				text : 'chart',
				listeners : {
					click : function(n) {
						if (center.getItem(n.attributes.id)) {
							// 表示标签已打开,则激活
							center.setActiveTab(n.attributes.id);
						} else {
							var noticeModule = new Tm.common.Module({
										name : 'chartTreeNode',
										id : 'chartTreeNode',
										scriptFiles : ['web/src/chart/ChartIndexPanel.js','web/lib/jschart/jscharts.js'],
										afterInit : function() {
											var p = new Tm.chart.ChartIndexPanel({
														title : n.attributes.text, // 标题就是节点的文本
														id : n.attributes.id, // 标签的ID和节点的ID一样
														closable : true
													});
											center.add(p);
											center.setActiveTab(p);
										}
									});
						}
					}
				}
			});
	
	var fusionchartTreeNode = new Ext.tree.TreeNode({
		text : 'fusionchart',
		listeners : {
			click : function(n) {
				if (center.getItem(n.attributes.id)) {
					// 表示标签已打开,则激活
					center.setActiveTab(n.attributes.id);
				} else {
					var fusionchartTreeNode = new Tm.common.Module({
								name : 'fusionchartTreeNode',
								id : 'fusionchartTreeNode',
								scriptFiles : ['web/src/fusionchart/ChartIndexPanel.js','web/lib/fusionchart/Charts/FusionCharts.js'],
								afterInit : function() {
									var p = new Tm.fusionchart.ChartIndexPanel({
												title : n.attributes.text, // 标题就是节点的文本
												id : n.attributes.id, // 标签的ID和节点的ID一样
												closable : true
											});
									center.add(p);
									center.setActiveTab(p);
								}
							});
				}
			}
		}
	});

	root.appendChild([userTreeNode, roleTreeNode, companyTreeNode, categoryTreeNode, taskTreeNode, billTreeNode, fileTreeNode, noticeTreeNode,chartTreeNode,fusionchartTreeNode]);
	left.setRootNode(root);
	// 中间的选项面板
	var center = new Ext.TabPanel({
				region : 'center',
				defaults : {
					autoScroll : true
				},// 自动出现滚动条
				items : [{
							title : '首页',
							html : '欢迎使用本系统：extdemo！',
							id : 'index'
						}],
				enableTabScroll : true
			});
	center.setActiveTab('index');
	// 底部的面板
	var bottom = new Ext.Panel({
				region : 'south',
				html : '@copyright jfwu&yjwang' + '</br>' + 'trademark 运用技术 ：ext3；spring3 ；springMVC ;hibernate 3.2 ',
				collapsible : true,
				split : true,
				containerScroll : true,
				autoScroll : true,
				bodyStyle : 'padding: 10px;text-align: center; font-size:12px'
			});
	var vp = new Ext.Viewport({
				layout : 'border',
				items : [top, left, center, bottom]
			});
	left.expandAll();
});